Page({
  data: {
    courses: [], // 课程分类列表（从接口获取）
    recipes: [], // 菜谱分类列表（从新接口获取，初始为空）
    selectedCourseId: null,
    selectedRecipeId: null // 初始设为null，接口返回后更新
  },

  onLoad() {
    // 同时请求课程分类和菜谱分类接口
    this.getCourseCategories();
    this.getRecipeCategories();
  },

  // 请求课程分类接口（原逻辑保留，携带Token）
  getCourseCategories() {
    const token = wx.getStorageSync('token');
    wx.request({
      url: 'http://localhost:8080/course/categories/list',
      method: 'GET',
      header: {
        'content-type': 'application/json',
        'Authorization': token ? `Bearer ${token}` : ''
      },
      success: (res) => {
        if (res.statusCode === 401) {
          wx.showToast({ title: '登录已失效，请重新登录', icon: 'none' });
          setTimeout(() => {
            wx.navigateTo({ url: '/pages/login/login' });
          }, 1500);
          return;
        }

        if (res.data && res.data.code === 200) {
          const categoryData = res.data.rows || [];
          if (categoryData.length > 0) {
            const formattedCourses = categoryData.map((item, index) => ({
              id: Number(item.id),
              name: item.categoryName,
              selected: index === 0
            }));
            this.setData({
              courses: formattedCourses,
              selectedCourseId: Number(categoryData[0].id)
            });
          } else {
            wx.showToast({ title: '暂无课程分类数据', icon: 'none', duration: 2000 });
          }
        } else {
          wx.showToast({
            title: `课程分类获取失败：${res.data?.msg || '接口异常'}`,
            icon: 'none',
            duration: 2000
          });
          console.error('课程分类接口异常：', res.data);
        }
      },
      fail: (err) => {
        wx.showToast({ title: '网络错误，无法获取课程分类', icon: 'none', duration: 2000 });
        console.error('课程分类请求失败：', err);
      }
    });
  },

  // 新增：请求菜谱分类接口（对接http://localhost:8080/system/top/list）
  getRecipeCategories() {
    const token = wx.getStorageSync('token'); // 若接口需Token则携带，无需可删除
    wx.request({
      url: 'http://localhost:8080/system/top/list', // 新接口地址
      method: 'GET',
      header: {
        'content-type': 'application/json',
        'Authorization': token ? `Bearer ${token}` : '' // 接口需Token则保留，无需可删除
      },
      success: (res) => {
        // Token失效处理（与课程分类逻辑一致）
        if (res.statusCode === 401) {
          wx.showToast({ title: '登录已失效，请重新登录', icon: 'none' });
          setTimeout(() => {
            wx.navigateTo({ url: '/pages/login/login' });
          }, 1500);
          return;
        }

        // 处理接口返回的菜谱分类数据
        if (res.data && res.data.code === 200) {
          const recipeData = res.data.rows || [];
          if (recipeData.length > 0) {
            // 1. 按sort字段排序（从小到大，确保分类顺序正确）
            const sortedRecipes = [...recipeData].sort((a, b) => {
              return Number(a.sort) - Number(b.sort);
            });
            // 2. 格式化数据：添加selected状态（默认第一个选中），补充id/name/icon字段
            const formattedRecipes = sortedRecipes.map((item, index) => ({
              id: Number(item.id), // 接口id转为数字
              name: item.name, // 分类名称取自接口name字段
              icon: item.icon, // 保留接口返回的图标路径（可用于前端展示）
              selected: index === 0 // 第一个分类默认选中
            }));
            // 3. 更新数据到页面
            this.setData({
              recipes: formattedRecipes,
              selectedRecipeId: Number(sortedRecipes[0].id) // 初始选中第一个分类的ID
            });
          } else {
            wx.showToast({ title: '暂无菜谱分类数据', icon: 'none', duration: 2000 });
          }
        } else {
          wx.showToast({
            title: `菜谱分类获取失败：${res.data?.msg || '接口异常'}`,
            icon: 'none',
            duration: 2000
          });
          console.error('菜谱分类接口异常：', res.data);
        }
      },
      fail: (err) => {
        wx.showToast({ title: '网络错误，无法获取菜谱分类', icon: 'none', duration: 2000 });
        console.error('菜谱分类请求失败：', err);
      }
    });
  },

  // 课程分类选择变化（原逻辑保留）
  onCourseChange(e) {
    const selectedId = Number(e.detail.value);
    const updatedCourses = this.data.courses.map(item => ({
      ...item,
      selected: item.id === selectedId
    }));
    this.setData({ courses: updatedCourses, selectedCourseId: selectedId });
  },

  // 菜谱分类选择变化（适配新接口数据）
  onRecipeChange(e) {
    const selectedId = Number(e.detail.value);
    const updatedRecipes = this.data.recipes.map(item => ({
      ...item,
      selected: item.id === selectedId
    }));
    this.setData({ recipes: updatedRecipes, selectedRecipeId: selectedId });
  },

  // 确定按钮点击（保存偏好，补充菜谱分类校验）
  onConfirm() {
    const { selectedCourseId, selectedRecipeId, courses, recipes } = this.data;

    // 校验课程分类和菜谱分类是否已选择
    if (courses.length > 0 && !selectedCourseId) {
      wx.showToast({ title: '请选择课程分类', icon: 'none' });
      return;
    }
    if (recipes.length > 0 && !selectedRecipeId) {
      wx.showToast({ title: '请选择菜谱分类', icon: 'none' });
      return;
    }

    // 保存偏好到本地存储
    wx.setStorageSync('userPreference', {
      courseId: selectedCourseId,
      recipeId: selectedRecipeId,
      setTime: new Date().getTime()
    });

    wx.showToast({ title: '偏好设置成功', icon: 'success' });
    setTimeout(() => {
      wx.switchTab({ url: '/pages/index/index' });
    }, 1000);
  },

  // 跳过按钮点击（原逻辑保留）
  onSkip() {
    wx.showToast({ title: '已跳过偏好设置', icon: 'none' });
    setTimeout(() => {
      wx.switchTab({ url: '/pages/index/index' });
    }, 1000);
  }
});